﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sysgeprava.Entities;
using System.Data;

namespace Sysgeprava.Repository
{
    public class BovinoRepository:MasterRepository,IBovinoRepository
    {
        public List<BOVINO> GetAllFromBovino()
        {
            var query = from c in context.BOVINOes.Include("SEXO").Include("ETAPA").Include("RAZA")
                        where c.IndMuerte == false || c.IndMuerte == null
                        select c;
            return query.ToList();
        }

        public List<BOVINO> GetAllFromBovinoByCriterio(string criterio)
        {
            var query = from c in context.BOVINOes.Include("SEXO").Include("ETAPA").Include("RAZA")
                        where c.IndMuerte == false || c.IndMuerte == null
                        select c;
            if (criterio != null && criterio != string.Empty && criterio != "")
            {
                query = from c in context.BOVINOes.Include("SEXO").Include("ETAPA").Include("RAZA")
                        where (c.Nombre.ToUpper().Contains(criterio) ||
                        c.NroArete.ToUpper().Contains(criterio) ||
                        c.NroRegistro.ToUpper().Contains(criterio)) && (c.IndMuerte == false || c.IndMuerte == null)
                        select c;
            }
            return query.ToList();
        }

        public BOVINO GetAllFromBovinoById(int id)
        {
            var query = from c in context.BOVINOes
                        where c.Id.Equals(id)
                        select c;
            return query.SingleOrDefault();
        }

        public BOVINO GetAllFromBovinoByArete(string arete)
        {
            var query = from c in context.BOVINOes
                        where c.NroArete.Contains(arete)
                        select c;
            return query.SingleOrDefault();
        }

        public void AddBovino(BOVINO bovino)
        {
            bovino.RAZA = null;
            bovino.SEXO = null;
            bovino.ETAPA = null;
            bovino.BOV_MADRE = null;

            context.BOVINOes.Add(bovino);
            context.SaveChanges();
        }

        public void UpdateBovino(BOVINO bovino)
        {
            var bovinoDB = context.BOVINOes.Find(bovino.Id);

            bovinoDB.CantPartos = bovino.CantPartos;
            bovinoDB.FecCompra = bovino.FecCompra;
            bovinoDB.FecMuerte = bovino.FecMuerte;
            bovinoDB.FecNac = bovino.FecNac;
            bovinoDB.FecUltParto = bovino.FecUltParto;
            bovinoDB.IdEtapa = bovino.IdEtapa;
            bovinoDB.IdRaza = bovino.IdRaza;
            bovinoDB.IdSexo = bovino.IdSexo;
            bovinoDB.IndCelo = bovino.IndCelo;
            bovinoDB.IndComp = bovino.IndComp;
            bovinoDB.IndEnfermedad = bovino.IndEnfermedad;
            bovinoDB.IndMuerte = bovino.IndMuerte;
            bovinoDB.IndPrenes = bovino.IndPrenes;
            bovinoDB.IndPrimerisa = bovino.IndPrimerisa;
            bovinoDB.IndSecado = bovino.IndSecado;
            bovinoDB.IndTratamiento = bovino.IndTratamiento;
            bovinoDB.LugNac = bovino.LugNac;
            bovinoDB.Nombre = bovino.Nombre;
            bovinoDB.NomVendedor = bovino.NomVendedor;
            bovinoDB.NroArete = bovino.NroArete;
            bovinoDB.NroRegistro = bovino.NroRegistro;
            bovinoDB.PesoAct = bovino.PesoAct;
            bovinoDB.PesoDest = bovino.PesoDest;
            bovinoDB.PesoNac = bovino.PesoNac;
            bovinoDB.PrecComp = bovino.PrecComp;
            bovinoDB.LugComp = bovino.LugComp;
            bovinoDB.FOTO_BOVINO = bovino.FOTO_BOVINO;

            context.Entry(bovinoDB.FOTO_BOVINO).State = EntityState.Modified;
            context.Entry(bovinoDB).State = EntityState.Modified;
            context.SaveChanges();
        }
    }
}
